/* 
 * Gneat (http://gneat.org)
 *
 * (C) Copyright 2011 and beyond - Claudio Stella, all rights reserved.
 *
 * This file is part of Gneat.
 *
 * Gneat is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License (LGPL)
 * as published by the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Gneat is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * and the GNU General Public License, for completeness, along with Gneat.  
 * If not, see <http://www.gnu.org/licenses/>.
 */
package org.neatshell.gneat.client.presenter.core.manipulation;

import org.neatshell.gneat.client.presenter.core.IPresenter;

public interface Properties {
	public enum Property { 
		CELLSPACING("cellSpacing"),
		CELLPADDING("cellPadding"),
		CLASS("className"),
		COLSPAN("colSpan"),
		CONTENTEDITABLE("contentEditable"),		
		ENABLE("enable"),
		FOR("htmlFor"),
		FRAMEBORDER("frameBorder"),
		OFFSETHEIGHT("offsetHeight"),
		OFFSETLEFT("offsetLeft"),		
		OFFSETPARENT("offsetParent"),
		OFFSETTOP("offsetTop"),
		OFFSETWIDTH("offsetWidth"),
		NODENAME("nodeName"),
		NODEVALUE("nodeValue"),
		NODETYPE("nodeType"),
		MAXLENGTH("maxLength"),
		READONLY("readOnly"),
		ROWSPAN("rowSpan"),
		SCROLLHEIGHT("scrollHeight"),		
		SCROLLLEFT("scrollLeft"),		
		SCROLLTOP("scrollTop"),		
		SCROLLWIDTH("scrollWidth"),		
		STYLE("style"),
		TABINDEX("tabIndex"),
		TAG("tagName"),
		TITLE("title"),
		USEMAP("useMap"),
		VALUE("value");

		private String _name;
	
		Property(String name){
			_name = name;
		}
	
		public String getName(){
			return _name;
		}
	}

	IPresenter prop(Property prop, String propValue);
	IPresenter prop(String propName, String propValue);

	String prop(Property prop);
	String prop(String propName);

	boolean hasProp(Property... props);
	boolean hasProp(String... propNames);

	IPresenter removeProp(Property... props);
	IPresenter removeProp(String... propNames);
	
	IPresenter val(String value);
	String val();
}